# 1导入模块
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import joblib
from sklearn.metrics import roc_auc_score, classification_report
# 2获取预测数据
def data_preprocess(data_path):
    # 读取数据
    df = pd.read_csv(data_path, encoding='gbk')
    # 处理缺失值
    df.fillna(0, inplace=True)
    # 删除重复行
    df.drop_duplicates(inplace=True)
    # 去除冗余数据列
    df.drop(['EmployeeNumber', '是否满18', 'StandardHours'], axis=1, inplace=True)
    # 将类别型数据转换为数值型数据
    #   对无序object类别数据进行热编码处理
    df = pd.get_dummies(df, columns=['部门', '出差频率', '性别', '工作岗位', '婚姻状况', '加班', '专业'])
    #   将热编码后的数据从布尔型转换为数值型数据
    for col in df.columns:
        if df[col].dtype == 'bool':
            df[col] = df[col].astype(int)
    #   去除冗余数据列
    df.drop(['加班_Yes', '性别_Female'], axis=1, inplace=True)
    # 返回处理后的数据
    return df
predict_data = data_preprocess('../data/test2_translate.csv')             #pd.read_csv('../data/test2_translate.csv', encoding='gbk')
# 了解数据
predict_data.info()
# 根据测试集的特征相关性分析，仅提取出相关性高的特征：'月收入','年龄' '加班_No' '总工作年限' '离家距离' '工作时长'
X = predict_data.drop(['离职'],  axis=1)                    #predict_data[['月收入', '年龄', '加班_No', '总工作年限', '离家距离', '工作时长']]
y = predict_data['离职']
# 3特征工程
#   标准化
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 4模型预测
#   导入模型
model = joblib.load('../model/model.pkl')
y_pre = model.predict(X)
# 5模型评估
print(classification_report(y, y_pre))
print(f"AUC Score: {roc_auc_score(y, y_pre):.4f}")